//3096.得到更多分数的最少关卡数目
//https://leetcode.cn/problems/minimum-levels-to-gain-more-points
class Solution {
public:
    int minimumLevels(vector<int>& possible) {
        //sum 是所有关卡的得分总和
        //acnt = alice的得分
        //当 sum-acnt < acnt时 alice得分大于bob
        //因为sum-acnt>bob得分
        //最终 sum<2acnt 就满足条件

        int n = possible.size();
        int sum = 0;
        int acnt = 0;
        for(int& x:possible) sum += (x?1:-1);
        //bob至少要完成一个关卡 所以alice只能完成到n-1
        for(int i = 0;i<n-1;++i)
        {
            acnt += (possible[i]?1:-1);
            //如果满足公式就返回完成的关卡数
            if(2*acnt > sum) return i+1;
        }
        //无法完成
        return -1;
    }
};